// 专门用来处理主滚动条

export default function (refValue) {
  // refValue是需要设置滚动条的元素的ref的值[string]
  return {
    mounted() {
      this.$bus.$on("setMainScroll", this.handleSetMainScroll);
      this.$refs[refValue].addEventListener("scroll", this.handleMainScroll);
    },
    beforeDestroy() {
      // 因为用destroyed的话mainContainer元素已经被销毁找不到了, 所以这里使用beforeDestroy
      this.$bus.$emit("mainScroll"); // 组件销毁后, 通知其他组件取消ToTop组件的显示
      // 组件销毁之后取消事件
      this.$bus.$off("setMainScroll", this.handleSetMainScroll);
      this.$refs[refValue].removeEventListener("scroll", this.handleMainScroll);
    },
    methods: {
      handleSetMainScroll(scrollTop) {
        this.$refs[refValue].scrollTop = scrollTop;
      },
      handleMainScroll() {
        this.$bus.$emit("mainScroll", this.$refs[refValue]); // 向事件总线中抛出一个事件, data为滚动条的元素
      },
    },
  };
}
